ナビゲーション:前へ 上へ 次へ
2.13 乱数アルゴリズム
組み込みサブルーチンRANDOM_NUMBER
で提供される乱数ジェネレーターは、“MersenneTwister”です。
このジェネレーターはその状態を保持するための領域が大きく(630個の32ビット整数)非常に長い周期を持ちます。
(約 106000),
したがってRANDOM_SEED
ルーチンのGET
で返された値でのみPUT
を使用すること(つまり前回のシーケンスを繰り返すための使用)が推奨されます。
これはユーザーが直接独自に指定するシードが(630個もの値があるので)低エントロピーである可能性が高いためです。
しかしながらもしそれでもユーザ独自のシード(およびエントロピー)を提供する場合は、 シード配列の初期要素にその値を保存し、残りのすべての要素をゼロに設定する必要があります。 これにより末尾のゼロ要素は無視され、初期化には使用されません。 シードはランダムなビットストリームであるため、ビットの約半分が非ゼロであると想定されている事に注意して下さい。 (したがって、多くの小さな整数値を提供すると、メルセンヌツイスターシーケンスの低エントロピー部分に到達する可能性が高くなります。)